home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / BCPG10.ZIP / PAGE.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-09-08  |  9KB  |  608 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Boolean  BOOLEAN009
  28.     Integer  INTEGER001
  29.     Integer  INTEGER002
  30.     Integer  INTEGER003
  31.     Integer  INTEGER004
  32.     Integer  INTEGER005
  33.     Integer  INTEGER006
  34.     Integer  INTEGER007
  35.     Integer  INTEGER008
  36.     Integer  INTEGER009
  37.     Integer  INTEGER010
  38.     Integer  INTEGER011
  39.     Integer  INTEGER012
  40.     Integer  INTEGER013
  41.     Integer  INTEGER014
  42.     Integer  INTEGER015
  43.     Integer  INTEGER016
  44.     String   TSTRING001(20)
  45.     String   TSTRING002(20)
  46.     String   STRING003
  47.     String   STRING004
  48.     String   STRING005
  49.     String   STRING006
  50.     String   STRING007
  51.     String   STRING008
  52.     String   STRING009
  53.     String   STRING010
  54.     String   STRING011
  55.     String   STRING012
  56.     String   STRING013
  57.     String   STRING014
  58.     String   STRING015
  59.     String   STRING016
  60.     String   STRING017
  61.     String   STRING018
  62.     String   STRING019
  63.     String   STRING020
  64.     String   STRING021
  65.     String   STRING022
  66.     String   STRING023
  67.     String   STRING024
  68.     String   STRING025
  69.     String   STRING026
  70.     String   STRING027
  71.     String   STRING028
  72.     String   TSTRING029(1)
  73.     String   STRING030
  74.     String   STRING031
  75.     String   STRING032
  76.     String   STRING033
  77.     String   STRING034
  78.     String   STRING035
  79.     String   STRING036
  80.     String   STRING037
  81.     String   STRING038
  82.     String   STRING039
  83.     String   STRING040
  84.     Time     TIME001
  85.     Time     TIME002
  86.     Time     TIME003
  87.     Time     TIME004
  88.     Time     TIME005
  89.     Time     TIME006
  90.     Int      INT001
  91.     Int      INT002
  92.     Int      INT003
  93.     Int      INT004
  94.     Int      INT005
  95.     Int      TINT006(20)
  96.     Int      TINT007(20)
  97.     Int      INT008
  98.     Int      INT009
  99.     Int      INT010
  100.     Int      INT011
  101.     BigStr   BIGSTR001
  102.  
  103. ;------------------------------------------------------------------------------
  104.  
  105.     INT004 = 1
  106.     Goto LABEL004
  107.     :LABEL001
  108.     DefColor
  109.     Print STRING005
  110.     INT008 = GetX()
  111.     INT009 = GetY()
  112.     For INT005 = 1 To INT002
  113.         TINT006(INT005) = GetX()
  114.         TINT007(INT005) = GetY()
  115.         Print TSTRING001(INT005)
  116.         If (INT001 == 1) Then
  117.             If (INT005 == INT002) Then
  118.                 Print STRING007
  119.             Else
  120.                 Print STRING006
  121.             Endif
  122.         Else
  123.             AnsiPos INT008, GetY() + 1
  124.         Endif
  125.         TSTRING002(INT005) = Left(Strip(StripAtx(TSTRING001(INT005)), " "), 1)
  126.     Next
  127.     INT003 = INT004
  128.     Gosub LABEL003
  129.     Print STRING003, StripAtx(TSTRING001(INT003))
  130.     :LABEL002
  131.     STRING004 = Inkey()
  132.     Select Case (STRING004)
  133.         Case Chr(13)
  134.             DefColor
  135.             Return
  136.         Case "RIGHT", "DOWN", "."
  137.             Gosub LABEL003
  138.             Print TSTRING001(INT003)
  139.             If (INT003 == INT002) Then
  140.                 INT003 = 1
  141.             Else
  142.                 Inc INT003
  143.             Endif
  144.             Gosub LABEL003
  145.             Print STRING003, StripAtx(TSTRING001(INT003))
  146.         Case "LEFT", "UP", ","
  147.             Gosub LABEL003
  148.             Print TSTRING001(INT003)
  149.             If (INT003 == 1) Then
  150.                 INT003 = INT002
  151.             Else
  152.                 Dec INT003
  153.             Endif
  154.             Gosub LABEL003
  155.             Print STRING003, StripAtx(TSTRING001(INT003))
  156.         Case "END"
  157.             Gosub LABEL003
  158.             Print TSTRING001(INT003)
  159.             INT003 = INT002
  160.             Gosub LABEL003
  161.             Print STRING003, StripAtx(TSTRING001(INT003))
  162.         Case "HOME"
  163.             Gosub LABEL003
  164.             Print TSTRING001(INT003)
  165.             INT003 = 1
  166.             Gosub LABEL003
  167.             Print STRING003, StripAtx(TSTRING001(INT003))
  168.         Case ""
  169.             For INT005 = 1 To INT002
  170.                 If (Upper(STRING004) == Upper(TSTRING002(INT005))) Then
  171.                     Gosub LABEL003
  172.                     Print TSTRING001(INT003)
  173.                     INT003 = INT005
  174.                     Gosub LABEL003
  175.                     Print STRING003, StripAtx(TSTRING001(INT003))
  176.                     KbdStuff Chr(13)
  177.                 Endif
  178.             Next
  179.     End Select
  180.     Goto LABEL002
  181.     :LABEL003
  182.     INT010 = GetX()
  183.     If (INT010 > TINT006(INT003)) Then
  184.         Backup INT010 - TINT006(INT003)
  185.     ElseIf (INT010 < TINT006(INT003)) Then
  186.         Forward TINT006(INT003) - INT010
  187.     Endif
  188.     Return
  189.     :LABEL004
  190.     STRING008 = Chr(8)
  191.     BOOLEAN003 = 0
  192.     STRING009 = PPEPath() + "graph\pgsys"
  193.     STRING028 = PPEPath() + "page.cfg"
  194.     STRING030 = ReadLine(STRING028, 5)
  195.     If (Upper(ReadLine(STRING028, 8)) == "YES") BOOLEAN002 = 1
  196.     Tokenize STRING030
  197.     INTEGER009 = TokCount()
  198.     Redim TSTRING029, INTEGER009
  199.     For INTEGER010 = 1 To INTEGER009
  200.         STRING021 = GetToken()
  201.         If (STRING021 == "") Break
  202.         TSTRING029(INTEGER010) = STRING021
  203.     Next
  204.     STRING031 = PPEPath() + "cfg\pgmenus.cfg"
  205.     Tokenize ReadLine(STRING031, 1)
  206.     INTEGER012 = GetToken()
  207.     INTEGER015 = GetToken()
  208.     INTEGER011 = Random(Time())
  209.     INTEGER011 = Random(INTEGER012 - 1) + 1
  210.     Tokenize ReadLine(STRING031, 1 + INTEGER011)
  211.     INTEGER013 = GetToken()
  212.     INTEGER014 = GetToken()
  213.     STRING010 = TokenStr()
  214.     GetUser
  215.     BOOLEAN008 = 1
  216.     BOOLEAN004 = 1
  217.     STRING035 = PPEPath() + "graph\pgtext"
  218.     STRING034 = PPEPath() + "work\mxlog." + String(PcbNode())
  219.     INTEGER006 = ReadLine(STRING028, 1)
  220.     If (Upper(ReadLine(STRING028, 2)) == "YES") Then
  221.         BOOLEAN006 = 1
  222.     Else
  223.         BOOLEAN006 = 0
  224.     Endif
  225.     STRING037 = PPEPath() + "mx.cfg"
  226.     If (BOOLEAN006) Then
  227.         If (LoggedOn()) Goto LABEL005
  228.         If (Exist(STRING037)) Then
  229.             If (Upper(ReadLine(STRING037, 3)) == "YES") Then
  230.                 FAppend 3, STRING034, 1, 0
  231.                 Goto LABEL005
  232.             Endif
  233.             BOOLEAN006 = 0
  234.         Endif
  235.     Endif
  236.     :LABEL005
  237.     STRING023 = ReadLine(STRING028, 3)
  238.     If (Upper(ReadLine(STRING028, 4)) == "YES") Then
  239.         BOOLEAN007 = 0
  240.     Else
  241.         BOOLEAN007 = 1
  242.     Endif
  243.     If (BOOLEAN006) Then
  244.         STRING036 = "Page started at " + String(Time())
  245.         Gosub LABEL017
  246.     Endif
  247.     If (LangExt() <> "") Then
  248.         If (Exist(STRING035 + LangExt())) Then
  249.             STRING035 = STRING035 + LangExt()
  250.         Endif
  251.     Endif
  252.     STRING022 = ReadLine(STRING035, 1)
  253.     STRING013 = ReadLine(STRING035, 2)
  254.     STRING014 = ReadLine(STRING035, 3)
  255.     TIME001 = Time()
  256.     TIME002 = ReadLine(PCBDat(), 189)
  257.     TIME003 = ReadLine(PCBDat(), 190)
  258.     STRING026 = FileInf(PCBDat(), 7) + "pcboard.sys"
  259.     FOpen 1, STRING026, 0, 0
  260.     FSeek 1, 4, 0
  261.     FRead 1, STRING025, 2
  262.     FClose 1
  263.     INTEGER007 = STRING025
  264.     Select Case (INTEGER007)
  265.         Case 0
  266.             BOOLEAN005 = 0
  267.         Case -1
  268.             BOOLEAN005 = 1
  269.         Case Else
  270.             PrintLn "ERROR: cannot determine page bell status, defaulting to true"
  271.             BOOLEAN005 = 1
  272.             Wait
  273.     End Select
  274.     STRING015 = Chr(7)
  275.     STRING016 = Chr(13)
  276.     STRING017 = Chr(27)
  277.     STRING018 = Chr(27) + "["
  278.     STRING019 = STRING018 + "0;0H"
  279.     STRING020 = STRING018 + "K"
  280.     DefColor
  281.     Cls
  282.     If (BOOLEAN005) Then
  283.         If (BOOLEAN002) Then
  284.             Gosub LABEL020
  285.             If (BOOLEAN009) Goto LABEL006
  286.             If (BOOLEAN009) Then
  287.             Endif
  288.             If (((TIME002 > TIME003) && !((TIME001 > TIME003) && (TIME001 < TIME002))) || ((TIME003 > TIME002) && ((TIME001 >= TIME002) && (TIME001 <= TIME003)))) Then
  289.                 :LABEL006
  290.                 DispFile PPEPath() + "graph\page" + String(INTEGER011), 1 + 4
  291.                 Tokenize STRING010
  292.                 INTEGER001 = GetToken()
  293.                 INTEGER002 = GetToken()
  294.                 STRING032 = GetToken()
  295.                 If (LoggedOn()) Goto LABEL007
  296.                 STRING027 = ""
  297.                 AnsiPos INTEGER001, INTEGER002
  298.                 InputText STRING032 + "_", STRING027, 1, 60
  299.                 If (STRING027 == "") Return
  300.                 Newline
  301.                 Goto LABEL008
  302.                 :LABEL007
  303.                 STRING027 = Upper(U_Name())
  304.                 AnsiPos INTEGER001, INTEGER002
  305.                 Print STRING032, STRING027
  306.                 :LABEL008
  307.                 INTEGER001 = GetToken()
  308.                 INTEGER002 = GetToken()
  309.                 STRING032 = GetToken()
  310.                 STRING033 = ""
  311.                 AnsiPos INTEGER001, INTEGER002
  312.                 InputText STRING032 + "_", STRING033, 1, 60
  313.                 If (STRING033 == "") Return
  314.                 If (BOOLEAN006) Then
  315.                     STRING036 = "Page reason (" + Upper(STRING033) + ")"
  316.                     If (!LoggedOn()) STRING036 = STRING036 + " and username (" + Upper(STRING027) + ")"
  317.                     STRING036 = STRING036 + " entered"
  318.                     Gosub LABEL017
  319.                 Endif
  320.                 AnsiPos INTEGER013, INTEGER014
  321.                 PrintLn ReplaceStr(STRING014, "%OPTEXT%", String(INTEGER006))
  322.                 Gosub LABEL015
  323.                 For INTEGER010 = 1 To INTEGER006
  324.                     Gosub LABEL016
  325.                     STRING012 = KInkey()
  326.                     If (STRING012 == " ") Then
  327.                         STRING011 = ""
  328.                         Gosub LABEL015
  329.                         Chat
  330.                         PageOff
  331.                         If (BOOLEAN006) Then
  332.                             STRING036 = "Page ended normally, exiting at " + String(Time())
  333.                             Gosub LABEL017
  334.                         Endif
  335.                         End
  336.                         Goto LABEL009
  337.                     Endif
  338.                     If (STRING012 == Chr(9)) Then
  339.                         BOOLEAN001 = 1
  340.                         Goto LABEL009
  341.                     Endif
  342.                     If (STRING012 == STRING017) Then
  343.                         INTEGER010 = INTEGER006 + 1
  344.                     Endif
  345.                     :LABEL009
  346.                     If (Abort()) INTEGER010 = INTEGER006 + 1
  347.                 Next
  348.                 PageOn
  349.                 STRING011 = ""
  350.                 Gosub LABEL015
  351.                 If (Abort()) Then
  352.                     ResetDisp
  353.                     Newline
  354.                     If (BOOLEAN006) Then
  355.                         STRING036 = "Page was aborted by user at " + String(Time())
  356.                         Gosub LABEL017
  357.                     Endif
  358.                     End
  359.                     Goto LABEL010
  360.                 Endif
  361.                 Newline
  362.             Endif
  363.         Endif
  364.     Endif
  365.     :LABEL010
  366.     INTEGER016 = Random(Time())
  367.     INTEGER016 = Random(INTEGER015 - 1) + 1
  368.     If ((Upper(ReadLine(STRING028, 6)) == "YES") && !BOOLEAN003) Then
  369.         BOOLEAN003 = 1
  370.         DispFile PPEPath() + "graph\emer" + String(INTEGER016), 1 + 4
  371.         FreshLine
  372.         Print ReadLine(STRING035, 1)
  373.         Gosub LABEL019
  374.         If (INT003 == 2) Then
  375.             FreshLine
  376.             STRING033 = ""
  377.             InputStr ReadLine(STRING035, 2) + "_", STRING033, 1, 60, Mask_Ascii(), 8
  378.             If (STRING033 == Upper(ReadLine(STRING028, 7))) Then
  379.                 If (BOOLEAN006) Then
  380.                     STRING036 = "Correct emergency page password entered, paging"
  381.                     Gosub LABEL017
  382.                 Endif
  383.                 FreshLine
  384.                 PrintLn ReadLine(STRING035, 4)
  385.                 Delay 10
  386.                 Goto LABEL006
  387.                 Goto LABEL011
  388.             Endif
  389.             If (BOOLEAN006) Then
  390.                 STRING036 = "Incorrect emergency page password entered, not paging"
  391.                 Gosub LABEL017
  392.             Endif
  393.             FreshLine
  394.             PrintLn ReadLine(STRING035, 5)
  395.             Delay 10
  396.             PageOn
  397.             End
  398.             :LABEL011
  399.             Goto LABEL012
  400.         Endif
  401.         End
  402.     Endif
  403.     :LABEL012
  404.     DispFile PPEPath() + "graph\pgno" + String(INTEGER016), 1 + 4
  405.     Wait
  406.     If (BOOLEAN006) Then
  407.         If (BOOLEAN005) Goto LABEL013
  408.         STRING036 = "Page bell is off"
  409.         Goto LABEL014
  410.         :LABEL013
  411.         STRING036 = "Unsuccesfull page"
  412.         :LABEL014
  413.         STRING036 = STRING036 + ", exiting page at " + String(Time())
  414.         Gosub LABEL017
  415.     Endif
  416.     PageOn
  417.     Return
  418.     :LABEL015
  419.     INTEGER001 = GetX()
  420.     INTEGER002 = GetY()
  421.     SPrint STRING019, STRING020
  422.     INTEGER003 = 1
  423.     While (1) Do
  424.         STRING021 = ReadLine(STRING009, INTEGER003)
  425.         If (STRING021 == "") Break
  426.         SPrintLn STRING021
  427.         Inc INTEGER003
  428.     EndWhile
  429.     SPrint STRING018 + String(INTEGER002) + ";" + String(INTEGER001) + "H"
  430.     Return
  431.     :LABEL016
  432.     Tokenize STRING023
  433.     INTEGER004 = GetX()
  434.     INTEGER005 = GetY()
  435.     STRING024 = GetToken()
  436.     INTEGER003 = 1
  437.     While (STRING024 <> "") Do
  438.         If (INTEGER003 == INTEGER009) Then
  439.             AnsiPos INTEGER004, INTEGER005
  440.             Print TSTRING029(INTEGER003)
  441.             INTEGER003 = 1
  442.         Else
  443.             AnsiPos INTEGER004, INTEGER005
  444.             Print TSTRING029(INTEGER003)
  445.             Inc INTEGER003
  446.         Endif
  447.         INTEGER008 = STRING024
  448.         If (!BOOLEAN001) Sound INTEGER008
  449.         Delay GetToken()
  450.         STRING024 = GetToken()
  451.     EndWhile
  452.     Return
  453.     :LABEL017
  454.     If (LoggedOn()) Goto LABEL018
  455.     FPutLn 3, "    " + STRING036
  456.     Return
  457.     :LABEL018
  458.     Log STRING036, 0
  459.     Return
  460.     :LABEL019
  461.     INT001 = 1
  462.     INT002 = 2
  463.     TSTRING001(2) = ReadLine(STRING035, 6)
  464.     TSTRING001(1) = ReadLine(STRING035, 7)
  465.     STRING003 = ReadLine(STRING035, 8)
  466.     STRING005 = ReadLine(STRING035, 9)
  467.     STRING006 = ReadLine(STRING035, 10)
  468.     STRING007 = ReadLine(STRING035, 11)
  469.     Goto LABEL001
  470.     :LABEL020
  471.     TIME006 = Time()
  472.     INT011 = Dow(Date())
  473.     BIGSTR001 = ReadLine(PPEPath() + "page.tim", INT011 + 1)
  474.     Tokenize BIGSTR001
  475.     STRING038 = Strip(GetToken(), "-")
  476.     While (STRING038 <> "") Do
  477.         STRING039 = Left(STRING038, 5) + ":00"
  478.         STRING040 = Right(STRING038, 5) + ":00"
  479.         TIME004 = ToTime(STRING039)
  480.         TIME005 = ToTime(STRING040)
  481.         If ((TIME006 >= TIME004) && (TIME006 <= TIME005)) Then
  482.             BOOLEAN009 = 1
  483.             Return
  484.         Endif
  485.         STRING038 = GetToken()
  486.     EndWhile
  487.     BOOLEAN009 = 0
  488.     Return
  489.  
  490. ;------------------------------------------------------------------------------
  491. ;
  492. ; Usage report (before postprocessing)
  493. ;
  494. ; ■ Statements used :
  495. ;
  496. ;    4       End
  497. ;    1       Cls
  498. ;    2       Wait
  499. ;    91      Goto 
  500. ;    129     Let 
  501. ;    19      Print 
  502. ;    4       PrintLn 
  503. ;    64      If 
  504. ;    3       DispFile 
  505. ;    1       FOpen 
  506. ;    1       FAppend 
  507. ;    1       FClose 
  508. ;    1       FPutLn 
  509. ;    1       ResetDisp
  510. ;    1       GetUser
  511. ;    3       DefColor
  512. ;    1       Log 
  513. ;    1       InputStr 
  514. ;    24      Gosub 
  515. ;    11      Return
  516. ;    3       Delay 
  517. ;    3       Inc 
  518. ;    1       Dec 
  519. ;    3       Newline
  520. ;    6       Tokenize 
  521. ;    2       InputText 
  522. ;    1       KbdStuff 
  523. ;    7       AnsiPos 
  524. ;    1       Backup 
  525. ;    1       Forward 
  526. ;    4       FreshLine
  527. ;    1       Sound 
  528. ;    1       Chat
  529. ;    2       SPrint 
  530. ;    1       SPrintLn 
  531. ;    3       PageOn
  532. ;    1       PageOff
  533. ;    1       FSeek 
  534. ;    1       FRead 
  535. ;    1       Redim 
  536. ;
  537. ;
  538. ; ■ Functions used :
  539. ;
  540. ;    1       -
  541. ;    55      +
  542. ;    4       -
  543. ;    31      ==
  544. ;    4       <>
  545. ;    6       <
  546. ;    6       <=
  547. ;    4       >
  548. ;    10      >=
  549. ;    58      !
  550. ;    14      &&
  551. ;    9       ||
  552. ;    11      Upper()
  553. ;    2       Left()
  554. ;    1       Right()
  555. ;    8       Chr()
  556. ;    2       Abort()
  557. ;    4       Random()
  558. ;    1       Date()
  559. ;    8       Time()
  560. ;    1       U_Name()
  561. ;    1       Dow()
  562. ;    7       StripAtx()
  563. ;    2       Strip()
  564. ;    1       Inkey()
  565. ;    11      String()
  566. ;    1       Mask_Ascii()
  567. ;    3       PCBDat()
  568. ;    10      PPEPath()
  569. ;    1       PcbNode()
  570. ;    28      ReadLine()
  571. ;    16      GetToken()
  572. ;    2       Exist()
  573. ;    1       TokenStr()
  574. ;    3       LangExt()
  575. ;    5       GetX()
  576. ;    5       GetY()
  577. ;    1       FileInf()
  578. ;    1       KInkey()
  579. ;    4       LoggedOn()
  580. ;    1       TokCount()
  581. ;    1       PageStat()
  582. ;    1       ReplaceStr()
  583. ;    2       ToTime()
  584. ;
  585. ;------------------------------------------------------------------------------
  586. ;
  587. ; Analysis flags : d
  588. ;
  589. ; d - Access PCBOARD.DAT ■ 2
  590. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  591. ;     for many PPE so they can find various informations on the system
  592. ;     (system paths, max number of lines in messages, ...) but it may also
  593. ;     be a way to gather vital informations.
  594. ;     ■ Search for : PCBDAT()
  595. ;
  596. ;------------------------------------------------------------------------------
  597. ;
  598. ; Postprocessing report
  599. ;
  600. ;    4       For/Next
  601. ;    3       While/EndWhile
  602. ;    34      If/Then or If/Then/Else
  603. ;    2       Select Case
  604. ;
  605. ;------------------------------------------------------------------------------
  606. ;                 AEGiS Corp - Break the routines, code against the machines!
  607. ;------------------------------------------------------------------------------
  608.